package com.zzy.edu.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zzy.commonutils.R;
import com.zzy.edu.entity.EduTeacher;
import com.zzy.edu.entity.vo.teacher.TeacherQuery;
import com.zzy.edu.service.EduTeacherService;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 讲师 前端控制器
 * </p>
 *
 * @author KAZU
 * @since 2023-01-07
 */
@SuppressWarnings("all")
@RestController
@RequestMapping("/eduservice/teacher")
@CrossOrigin
public class EduTeacherController {
	
	@Autowired
	private EduTeacherService teacherService;
	
	/**
	 * 查询讲师表中的所有数据
	 * */
	@ApiOperation(value = "所有讲师列表")
	@GetMapping("findAll")
	public R findAllTeacher() {
		List<EduTeacher> list = teacherService.list(null);
		return R.ok().data("items", list);
	}
	
	/**
	 * 逻辑删除讲师方法
	 * */
	@ApiOperation(value = "逻辑删除讲师")
	@DeleteMapping("{id}")
	public R removeTeacher(@ApiParam(name = "id", value = "讲师ID", required = true) @PathVariable String id) {
		boolean flag = teacherService.removeById(id);
		if (flag) {
			return R.ok();
		} else {
			return R.error();
		}
	}
	
	/**
	 * 分页查询
	 * @param current 当前页
	 * @param limit 每页记录数
	 * */
	@GetMapping("pageTeacher/{current}/{limit}")
	public R pageListTeacher(@PathVariable long current,
							 @PathVariable long limit) {
		//创建page对象
		Page<EduTeacher> pageTeacher = new Page<>(current, limit);
		
//		try {
//			int i = 10/0;
//		} catch (Exception e) {
//			throw new GuliException(700, "自定义异常");
//		}
		
		teacherService.page(pageTeacher, null);
		long total = pageTeacher.getTotal(); // 总记录数
		List<EduTeacher> records = pageTeacher.getRecords(); // 数据list集合
		return R.ok().data("total", total).data("rows", records);
	}

	/**
	 * 分页排序条件查询
	 * */
	@PostMapping("pageTeacherCondition/{current}/{limit}")
	public R pageTeacherCondition(@PathVariable long current,
								  @PathVariable long limit,
								  @RequestBody(required = false) TeacherQuery teacherQuery) {
		Page<EduTeacher> pageTeacher = new Page<>(current, limit);
		QueryWrapper<EduTeacher> wrapper = new QueryWrapper<>();
		String name = teacherQuery.getName();
		Integer level = teacherQuery.getLevel();
		String begin = teacherQuery.getBegin();
		String end = teacherQuery.getEnd();
		if (!StringUtils.isEmpty(name)) {
			wrapper.like("name", name);
		}
		if (!StringUtils.isEmpty(level)) {
			wrapper.eq("level", level);
		}
		if (!StringUtils.isEmpty(begin)) {
			System.out.println(begin);
			wrapper.ge("gmt_create", begin);
		}
		if (!StringUtils.isEmpty(end)) {
			System.out.println(end);
			wrapper.le("gmt_create", end);
		}
		wrapper.orderByDesc("gmt_create");
		teacherService.page(pageTeacher, wrapper);
		long total = pageTeacher.getTotal();
		List<EduTeacher> records = pageTeacher.getRecords();
		return R.ok().data("total", total).data("records", records);
	}
	
	/**
	 * 添加讲师接口
	 * */
	@PostMapping("addTeacher")
	public R addTeacher(@RequestBody EduTeacher eduTeacher) {
		boolean save = teacherService.save(eduTeacher);
		if (save) {
			return R.ok();
		} else {
			return R.error();
		}
	}
	
	/**
	 * 根据讲师id进行查询
	 * */
	@GetMapping("getTeacher/{id}")
	public R getTeacher(@PathVariable String id) {
		EduTeacher eduTeacher = teacherService.getById(id);
		return R.ok().data("teacher", eduTeacher);
}
	
	/**
	 * 讲师修改功能
	 * */
	@PostMapping("updateTeacher")
	public R updateTeacher(@RequestBody EduTeacher eduTeacher) {
		boolean flag = teacherService.updateById(eduTeacher);
		if (flag) {
			return R.ok();
		} else {
			return R.error();
		}
	}
	
	
	
}

